import request from "@/api/officeservice";
import util from '@/libs/util'
const BASEURL = '/glFlow/picFile/page'
// 筛选框参数 => 配置
const paramsConfig = [
  // 输入框
  {
    label: "姓名",
    key: "name",
    type: "input",
    size: "small",
    ignoreReset: true,
    default: undefined,
  },
  // 选择框
  {
    label: "是否渲染",
    key: "render",
    type: "select",
    size: "small",
    default: undefined,
    option: [
      {
        label: "是",
        value: 1,
      },
      {
        label: "否",
        value: 0,
      },
    ],
  },
  // 日期选择框多选
  {
    label: "日期多选",
    key: "searchdate1",
    type: "daterange",
    size: "small",
    valueFormat: "yyyy/MM/dd",
    queryDateKey: ["startCreateTime", "endCreateTime"],
    default: undefined,
    pickerOptions: {
      shortcuts: [{
        text: '最近一周',
        onClick(picker) {
          const end = new Date();
          const start = new Date();
          start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
          picker.$emit('pick', [start, end]);
        }
      }, {
        text: '最近一个月',
        onClick(picker) {
          const end = new Date();
          const start = new Date();
          start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
          picker.$emit('pick', [start, end]);
        }
      }, {
        text: '最近三个月',
        onClick(picker) {
          const end = new Date();
          const start = new Date();
          start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
          picker.$emit('pick', [start, end]);
        }
      }]
    },
  },
  // 日期选择框单选
  {
    label: "日期单选",
    key: "searchdate3",
    type: "date",
    size: "small",
    valueFormat: "yyyy/MM/dd",
    default: undefined,
    pickerOptions: {
      disabledDate(time) {
        return time.getTime() > Date.now();
      },
      shortcuts: [{
        text: '昨天',
        onClick(picker) {
          const date = new Date();
          date.setTime(date.getTime() - 3600 * 1000 * 24);
          picker.$emit('pick', date);
        }
      }, {
        text: '一周前',
        onClick(picker) {
          const date = new Date();
          date.setTime(date.getTime() - 3600 * 1000 * 24 * 7);
          picker.$emit('pick', date);
        }
      }]
    },
  },
  // 日期选择框单选 时间
  {
    label: "日期单选时间",
    key: "searchdate4",
    type: "datetime",
    size: "small",
    valueFormat: "yyyy/MM/dd HH:mm:ss",
    default: undefined,
  },
  // 日期选择框多选
  {
    label: "日期多选时间",
    key: "searchdate6",
    type: "datetimerange",
    size: "small",
    valueFormat: "yyyy/MM/dd HH:mm:ss",
    queryDateKey: ["startCreateTime", "endCreateTime"],
    default: undefined,
  }
];
// 表格列参数 => 配置
const tableColumnData = [
  {
    // key
    prop: "id",
    // 标签
    label: "id",
    fixed: true,
  },
  {
    prop: "uniqueCode",
    label: "唯一码",
    sortable: true,
    notSummary: true,
  },
  {
    prop: "goodsAllocationNo",
    label: "货位号",
    form: true,
    rules: true,
    type: 'editor',
    height: 190,
  },
  {
    prop: "sourcePicPath",
    label: "原图片路径",
    width: 150,
    form: true,
    textarea: 2,
    notSummary: true,
  },
  {
    prop: "destinationPicPath",
    label: "目标图片路径",
    width: 300,
    form: true,
    type: 'image',
    multiple: false,
    limit: 1,
    accept: '.png',
    neme: 'image',
    notSummary: true,
  },
  {
    prop: "productName",
    label: "产品名",
    form: true,
    type: 'file',
    multiple: false,
    limit: 1,
    accept: '.xlsx',
    neme: 'file',
    notSummary: true,
  },
  {
    prop: "fileName",
    label: "文件名",
    width: 200,
    edit: true,
    editDisabled: true,
    textarea: 2,
    copy: true,
    tooltip: 'top',
    notSummary: true,
  },
  {
    prop: "picNo",
    label: "单号",
    edit: true,
    editDisabled: true,
    tooltip: 'top'
  },

  {
    prop: "sourceType",
    label: "扫描来源",
    // 作用域类型
    type: "select",
    tableEdit: true,
    option: [
      {
        value: 1,
        label: "版画",
        // 标签颜色 无则为空串
        type: "success",
      },
      {
        value: 2,
        label: "拼图",
        type: "warning",
      },
      {
        value: 3,
        label: "装饰画",
        type: "info",
      },
    ],
  },
  {
    prop: "isGenerateWord",
    label: "是否生成word文档",
    // 作用域类型
    type: "select",
    form: true,
    multiple: true,
    option: [
      {
        value: 1,
        label: "是",
        // 标签颜色 无则为空串
        type: "success",
      },
      {
        value: 0,
        label: "否",
        type: "",
      },
    ],
  },
  {
    prop: "picThumbnailUrl",
    label: "回忆图片",
    notSummary: true,
    type: "image",
    // 如果这里需要配置附加路径 没有不填 不可删除此baseSrc配置
    baseSrc: "",
    style: {
      height: "30px",
    },
  },
  {
    prop: "createTime",
    label: "创建时间",
    type: "date",
    form: true,
  },
];

export const config = {
  // 公共配置
  // 带 * 需要配置
  // 分页编码根据不同的参数进行调整
  publicConfig: {
    // * 是否开启参数查询？
    showParamsCom: true,
    // * 是否开启表格配置？
    openTableOption: true,
    // * 是否开启crud配置？
    crudOption: true,
    // * 是否开启分页组件？
    showPageCom: true,

    // * 表格配置名称 开启后每个页面需要配置不同的name
    name: "nihao",

    // 进入页面即发送请求
    defaultRequest: false,
    // 重置后是否发送请求
    resetRequest: false,
    // 筛选条件改变后是否发送请求
    changeParamsRequest: false,
    // 表格加载动画
    tableLoading: true,
    // 输入框输入发起请求 节流间隔
    inputDelay: 500,
    // 为了防止请求过快增加 300毫秒的表格加载动画
    afterLoding: 300,

    // * 分页不使用硬编码 键名
    pageSize: "size",
    currentPage: "current",

    // * 排序不使用硬编码 键名 这里动态更改 orderByColumn的value 和 orderByDesc 的value 来动态配置请求参数字段
    orderByColumn: "orderByColumn",
    // 这里配置不同的升序/降序字段传递的参数 根据不同接口要求来传递 开启特殊字段传递开开启 enable
    orderByDesc: {
      key: "orderByDesc",
      enable: true,
      descending: 0,
      ascending: 1
    },

    // 上传组件需要的请求头携带token 和 基础的上传路径
    headers: { Authorization: "JWT " + util.token() },
    baseurl: util.baseURL(),
    // 文件上传大小 限制 /mb
    filesize: 4,
  },
  // 筛选配置
  paramConfig: {
    // 是否展示筛选组件
    showSearch: true,
    // 搜索对象值映射
    queryParamsMaps: {},
    // 搜索对象配置项
    queryParams: paramsConfig,
    // 尺寸
    size: "small",
    // 标签宽度
    labelWidth: "70px",
    // 搜索按钮尺寸
    searchButtom: {
      show: true,
      size: "small",
      type: "primary",
      text: "搜索",
      icon: "el-icon-search",
    },
    // 搜索按钮尺寸
    resetButtom: {
      show: true,
      size: "small",
      type: "",
      text: "重置",
      icon: "el-icon-refresh",
    },
  },
  // crud配置
  crudConfig: {
    // 按钮列表
    add:{
      icon: 'el-icon-plus',
      title: '新增',
      type: 'primary',
      plain: true,
      size: 'small',
      disabled: false,
      click: 'add',
      show: true,
    },
    del:{
      icon: 'el-icon-delete',
      title: '删除',
      type: 'danger',
      plain: true,
      size: 'small',
      disabled: false,
      click: 'del',
      show: false,
    },
    exp:{
      icon: 'el-icon-upload2',
      title: '导出',
      type: 'info',
      plain: true,
      size: 'small',
      disabled: false,
      click: 'exp',
      show: true,
    }
  },
  // 表格配置
  tableConfig: {
    // 开启/关闭 加载动画
    loading: true,
    // 开启/关闭 多选
    selection: true,
    // 固定列
    fixedColumn: [],
    // 开启/关闭 斑马纹
    stripe: true,
    // 开启/关闭 边框
    border: true,
    // 开启/关闭 合计
    showSummary: true,
    // 头部样式
    headerCellStyle: {'text-align': 'center', background: '#f5f7f9', color: '#330f3d'},
    // 开启/关闭 列的宽度自动撑开 这会使列宽失效
    fit: true,
    // 开启/关闭 操作列
    isShowTableEditColumn: true,
    // 开启/关闭 操作列 编辑
    isShowTableEditColumnEdit: true,
    // 开启/关闭 操作列 删除
    isShowTableEditColumnDelete: true,
    // 固定在右侧操作列 false / 'right'
    tableEditColumnWidthFixed: false,
    // 操作列宽度
    tableEditColumnWidth: 150,
    // 列表图片最大宽度
    imgMaxWidth: 150,
    // 列表项配置数据
    tableColumnData,
    // 表格数据
    tableData: [],
    // 表格尺寸
    size: "mini",
    tableLoading: true,
    // 表格多选
    ids: [],
    // 多选的key
    idsKey: 'id',
    // 是否开启多行隐藏
    beyondHidden: true,
    // 多行隐藏样式
    beyondHiddenStyle: {
      'display': '-webkit-box',
      '-webkit-line-clamp': 2,
      '-webkit-box-orient': 'vertical',
      'cursor': 'pointer'
    },
  },
  // 表格控制配置
  tableOptionConfig: {
    title: "表格设置",
    size: "26%",
    // 抽屉开启方向
    direction: "rtl",
    treeData: [],
    // 备份列表配置数据
    treeDataSave: [],
    //开启/关闭 抽屉
    drawer: false,
  },
  // 弹出框配置
  dialogConfig: {
    title: '新增',
    // 模式 新增 / 编辑
    mode: 'add',
    // 展示 / 隐藏
    dialogVisible: false,
    // 宽度 % 字符类型
    width: '50%',
    // 表单
    form: {},
    rules: {},
    labelWidth: '130px',
    // 多余的表单请求参数
    auxiliaryForm: {
      nihao: 'aaa'
    }
  },
  // vuex参数映射
  // storeConfig: {
  //   // 这里配置用户 字典 等等 映射信息
  //   user: { key: 'hd/user', value: 'info'},
  //   dicts: { key: 'hd/dict', value: 'data'}
  // },
  // 分页总条数
  total: undefined,
  // 请求的多余参数
  auxiliaryParams: {},

  // 请求列表数据
  async getList(query) {
    const res = await request({
      url: BASEURL,
      method: "get",
      params: { ...query },
    });
    // 这里设置不同接口返回的格式 直接到数组层级 records 和 data
    return {
      data: res.data.data.records,
      total: res.data.data.total
    }
  },

  // 新增列表数据
  async addList(data) {
    const res = await request({
      url: BASEURL,
      method: "post",
      data
    });
    // 这里设置不同接口返回的格式 直接到数组层级 records 和 data
    return {
      data: res.data.data,
      msg: res.data.data.msg
    }
  },

  // 修改数据
  async editList(data) {
    const res = await request({
      url: BASEURL + data.id,
      method: "put",
      data
    });
    // 除却表格数据 所有接口只返回成功提示和错误提示
    return {
      msg: res.data.data.msg
    }
  },

  // 删除列表数据
  async deleteList(id) {
    const res = await request({
      url: BASEURL + id,
      method: "delete",
    });
    // 除却表格数据 所有接口只返回成功提示和错误提示
    return {
      msg: res.data.data.msg
    }
  },

  // 多选删除
  async deleteMultipleList(data) {
    const res = await request({
      url: BASEURL + data.id,
      method: "delete",
      data,
    });
    // 除却表格数据 所有接口只返回成功提示和错误提示
    return {
      msg: res.data.data.msg
    }
  },

  // 导出
  async exportList(data) {
    const res = await request({
      url: BASEURL,
      method: "post",
      data
    });
    // 除却表格数据 所有接口只返回成功提示和错误提示
    return {
      msg: res.data.data.msg
    }
  },

  // upload上传成功
  handleUploadSuccessCallBack(res) {
    // res返回了上传结果 这里根据最终表单上传要求返回 url 或者是其他字段例如id
    return {
      // 返回类型为 data 是真正发送到后端的数据  如果是id 则暂时无法展示图片
      data: res.data.url,
      msg: "上传成功！"
      // err
    }
  },
  // 图片上传失败
  handleUploadErrorCallBack() {
    // res返回了上传结果 这里根据最终表单上传要求返回 url 或者是其他字段例如id
    return {
      // 返回类型为 结果 或是 err
      err: "上传失败！"
    }
  },
};
